{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 0.Import Packages"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import tensorflow as tf\n",
    "import keras\n",
    "import os\n",
    "import glob\n",
    "import seaborn as sns\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "import math\n",
    "\n",
    "import tensorflow as tf\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from sklearn.metrics import mean_squared_error, mean_absolute_error\n",
    "from keras.preprocessing.sequence import TimeseriesGenerator\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense, LSTM, SimpleRNN, Dropout\n",
    "from keras.optimizers import RMSprop\n",
    "from keras.callbacks import ModelCheckpoint, EarlyStopping\n",
    "from keras.models import model_from_json\n",
    "from keras import optimizers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. Load Dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['B05_discharge_soh.csv', 'B07_discharge_soh.csv', 'B18_discharge_soh.csv', 'B33_discharge_soh.csv', 'B34_discharge_soh.csv', 'B46_discharge_soh.csv', 'B47_discharge_soh.csv', 'B48_discharge_soh.csv']\n",
      "The number of dataset : 8\n"
     ]
    }
   ],
   "source": [
    "dir = 'refined_dataset'\n",
    "listdir = os.listdir(dir)\n",
    "\n",
    "print(listdir)\n",
    "print(\"The number of dataset :\", len(listdir))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "num = ['B05', 'B07', 'B18', 'B33', 'B34', 'B46', 'B47', 'B48']\n",
    "for i in range(len(listdir)):\n",
    "    vector = np.zeros((1,3))\n",
    "    path = os.path.join(os.getcwd(), 'refined_dataset/', num[i] + '_discharge_soh.csv')\n",
    "    csv = pd.read_csv(path)\n",
    "    df = pd.DataFrame(csv)\n",
    "    \n",
    "    vec = df[['cycle', 'capacity', 'SOH']]\n",
    "    \n",
    "    globals()['data_{}'.format(num[i])] = vec"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>terminal_voltage</th>\n",
       "      <th>terminal_current</th>\n",
       "      <th>temperature</th>\n",
       "      <th>charge_current</th>\n",
       "      <th>charge_voltage</th>\n",
       "      <th>time</th>\n",
       "      <th>capacity</th>\n",
       "      <th>cycle</th>\n",
       "      <th>SOH</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4.191492</td>\n",
       "      <td>-0.004902</td>\n",
       "      <td>24.330034</td>\n",
       "      <td>-0.0006</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>1.856487</td>\n",
       "      <td>1</td>\n",
       "      <td>0.928244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.190749</td>\n",
       "      <td>-0.001478</td>\n",
       "      <td>24.325993</td>\n",
       "      <td>-0.0006</td>\n",
       "      <td>4.206</td>\n",
       "      <td>16.781</td>\n",
       "      <td>1.856487</td>\n",
       "      <td>1</td>\n",
       "      <td>0.928244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.974871</td>\n",
       "      <td>-2.012528</td>\n",
       "      <td>24.389085</td>\n",
       "      <td>-1.9982</td>\n",
       "      <td>3.062</td>\n",
       "      <td>35.703</td>\n",
       "      <td>1.856487</td>\n",
       "      <td>1</td>\n",
       "      <td>0.928244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3.951717</td>\n",
       "      <td>-2.013979</td>\n",
       "      <td>24.544752</td>\n",
       "      <td>-1.9982</td>\n",
       "      <td>3.030</td>\n",
       "      <td>53.781</td>\n",
       "      <td>1.856487</td>\n",
       "      <td>1</td>\n",
       "      <td>0.928244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3.934352</td>\n",
       "      <td>-2.011144</td>\n",
       "      <td>24.731385</td>\n",
       "      <td>-1.9982</td>\n",
       "      <td>3.011</td>\n",
       "      <td>71.922</td>\n",
       "      <td>1.856487</td>\n",
       "      <td>1</td>\n",
       "      <td>0.928244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50280</th>\n",
       "      <td>3.579262</td>\n",
       "      <td>-0.001569</td>\n",
       "      <td>34.864823</td>\n",
       "      <td>0.0006</td>\n",
       "      <td>0.000</td>\n",
       "      <td>2781.312</td>\n",
       "      <td>1.325079</td>\n",
       "      <td>168</td>\n",
       "      <td>0.662540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50281</th>\n",
       "      <td>3.581964</td>\n",
       "      <td>-0.003067</td>\n",
       "      <td>34.814770</td>\n",
       "      <td>0.0006</td>\n",
       "      <td>0.000</td>\n",
       "      <td>2791.062</td>\n",
       "      <td>1.325079</td>\n",
       "      <td>168</td>\n",
       "      <td>0.662540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50282</th>\n",
       "      <td>3.584484</td>\n",
       "      <td>-0.003079</td>\n",
       "      <td>34.676258</td>\n",
       "      <td>0.0006</td>\n",
       "      <td>0.000</td>\n",
       "      <td>2800.828</td>\n",
       "      <td>1.325079</td>\n",
       "      <td>168</td>\n",
       "      <td>0.662540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50283</th>\n",
       "      <td>3.587336</td>\n",
       "      <td>0.001219</td>\n",
       "      <td>34.565580</td>\n",
       "      <td>0.0006</td>\n",
       "      <td>0.000</td>\n",
       "      <td>2810.640</td>\n",
       "      <td>1.325079</td>\n",
       "      <td>168</td>\n",
       "      <td>0.662540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50284</th>\n",
       "      <td>3.589937</td>\n",
       "      <td>-0.000583</td>\n",
       "      <td>34.405920</td>\n",
       "      <td>0.0006</td>\n",
       "      <td>0.000</td>\n",
       "      <td>2820.390</td>\n",
       "      <td>1.325079</td>\n",
       "      <td>168</td>\n",
       "      <td>0.662540</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>50285 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       terminal_voltage  terminal_current  temperature  charge_current  \\\n",
       "0              4.191492         -0.004902    24.330034         -0.0006   \n",
       "1              4.190749         -0.001478    24.325993         -0.0006   \n",
       "2              3.974871         -2.012528    24.389085         -1.9982   \n",
       "3              3.951717         -2.013979    24.544752         -1.9982   \n",
       "4              3.934352         -2.011144    24.731385         -1.9982   \n",
       "...                 ...               ...          ...             ...   \n",
       "50280          3.579262         -0.001569    34.864823          0.0006   \n",
       "50281          3.581964         -0.003067    34.814770          0.0006   \n",
       "50282          3.584484         -0.003079    34.676258          0.0006   \n",
       "50283          3.587336          0.001219    34.565580          0.0006   \n",
       "50284          3.589937         -0.000583    34.405920          0.0006   \n",
       "\n",
       "       charge_voltage      time  capacity  cycle       SOH  \n",
       "0               0.000     0.000  1.856487      1  0.928244  \n",
       "1               4.206    16.781  1.856487      1  0.928244  \n",
       "2               3.062    35.703  1.856487      1  0.928244  \n",
       "3               3.030    53.781  1.856487      1  0.928244  \n",
       "4               3.011    71.922  1.856487      1  0.928244  \n",
       "...               ...       ...       ...    ...       ...  \n",
       "50280           0.000  2781.312  1.325079    168  0.662540  \n",
       "50281           0.000  2791.062  1.325079    168  0.662540  \n",
       "50282           0.000  2800.828  1.325079    168  0.662540  \n",
       "50283           0.000  2810.640  1.325079    168  0.662540  \n",
       "50284           0.000  2820.390  1.325079    168  0.662540  \n",
       "\n",
       "[50285 rows x 9 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv('refined_dataset/B05_discharge_soh.csv')\n",
    "df = pd.DataFrame(data)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cycle</th>\n",
       "      <th>capacity</th>\n",
       "      <th>SOH</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1.856487</td>\n",
       "      <td>0.928244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1.856487</td>\n",
       "      <td>0.928244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>1.856487</td>\n",
       "      <td>0.928244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1.856487</td>\n",
       "      <td>0.928244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1.856487</td>\n",
       "      <td>0.928244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50280</th>\n",
       "      <td>168</td>\n",
       "      <td>1.325079</td>\n",
       "      <td>0.662540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50281</th>\n",
       "      <td>168</td>\n",
       "      <td>1.325079</td>\n",
       "      <td>0.662540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50282</th>\n",
       "      <td>168</td>\n",
       "      <td>1.325079</td>\n",
       "      <td>0.662540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50283</th>\n",
       "      <td>168</td>\n",
       "      <td>1.325079</td>\n",
       "      <td>0.662540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50284</th>\n",
       "      <td>168</td>\n",
       "      <td>1.325079</td>\n",
       "      <td>0.662540</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>50285 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       cycle  capacity       SOH\n",
       "0          1  1.856487  0.928244\n",
       "1          1  1.856487  0.928244\n",
       "2          1  1.856487  0.928244\n",
       "3          1  1.856487  0.928244\n",
       "4          1  1.856487  0.928244\n",
       "...      ...       ...       ...\n",
       "50280    168  1.325079  0.662540\n",
       "50281    168  1.325079  0.662540\n",
       "50282    168  1.325079  0.662540\n",
       "50283    168  1.325079  0.662540\n",
       "50284    168  1.325079  0.662540\n",
       "\n",
       "[50285 rows x 3 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_B05  ## result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of data : (50285, 3)\n",
      "Shape of data : (50285, 3)\n",
      "Shape of data : (34866, 3)\n",
      "Shape of data : (42200, 3)\n",
      "Shape of data : (45909, 3)\n",
      "Shape of data : (23478, 3)\n",
      "Shape of data : (23478, 3)\n",
      "Shape of data : (23478, 3)\n"
     ]
    }
   ],
   "source": [
    "for i in range(len(listdir)):\n",
    "    print(\"Shape of data :\", np.shape(globals()['data_{}'.format(num[i])]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 255,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['B05_discharge_soh.csv', 'B07_discharge_soh.csv', 'B18_discharge_soh.csv', 'B33_discharge_soh.csv', 'B34_discharge_soh.csv', 'B46_discharge_soh.csv', 'B47_discharge_soh.csv', 'B48_discharge_soh.csv']\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(23478, 1)"
      ]
     },
     "execution_count": 255,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(listdir)\n",
    "dataset = data_B48[\"SOH\"]\n",
    "cycle = data_B48['cycle']\n",
    "\n",
    "dataset = np.array(dataset)\n",
    "dataset = dataset.reshape((len(dataset),1))\n",
    "dataset.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. Split train and test dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 256,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "11739 11739\n"
     ]
    }
   ],
   "source": [
    "train_size = int(len(dataset) * 0.5)\n",
    "# train_size = int(len(dataset) * 0.5)\n",
    "test_size = len(dataset) - train_size\n",
    "train, test = dataset[0:train_size,:], dataset[train_size:len(dataset),:]\n",
    "print(len(train), len(test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 257,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "def create_dataset(dataset, look_back=1):\n",
    "    dataX, dataY = [], []\n",
    "    for i in range(len(dataset) - look_back):\n",
    "        a = dataset[i:(i + look_back), 0]\n",
    "        dataX.append(a)\n",
    "        dataY.append(dataset[i + look_back, 0])\n",
    "    print(len(dataY))\n",
    "    return np.array(dataX), np.array(dataY)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 258,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "11738\n",
      "11738\n"
     ]
    }
   ],
   "source": [
    "look_back = 1\n",
    "trainX, trainY = create_dataset(train, look_back)\n",
    "testX, testY = create_dataset(test, look_back)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 259,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(11738, 1, 1)\n",
      "(11738, 1, 1)\n"
     ]
    }
   ],
   "source": [
    "trainX = np.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))\n",
    "testX = np.reshape(testX, (testX.shape[0], 1, testX.shape[1]))\n",
    "\n",
    "print(trainX.shape)\n",
    "print(testX.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Training with LSTM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 260,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = Sequential()\n",
    "model.add(LSTM(64, input_shape=(trainX.shape[1], trainX.shape[2])))\n",
    "\n",
    "model.add(Dense(1))\n",
    "\n",
    "model.compile(loss='mae', optimizer='adam')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 261,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0619 - val_loss: 0.0083\n",
      "Epoch 2/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0036 - val_loss: 0.0086\n",
      "Epoch 3/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0035 - val_loss: 0.0083\n",
      "Epoch 4/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0040 - val_loss: 0.0088\n",
      "Epoch 5/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0034 - val_loss: 0.0084\n",
      "Epoch 6/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0035 - val_loss: 0.0085\n",
      "Epoch 7/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0037 - val_loss: 0.0084\n",
      "Epoch 8/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0038 - val_loss: 0.0084\n",
      "Epoch 9/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0035 - val_loss: 0.0085\n",
      "Epoch 10/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0038 - val_loss: 0.0082\n",
      "Epoch 11/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0037 - val_loss: 0.0082\n",
      "Epoch 12/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0037 - val_loss: 0.0090\n",
      "Epoch 13/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0033 - val_loss: 0.0082\n",
      "Epoch 14/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0038 - val_loss: 0.0083\n",
      "Epoch 15/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0032 - val_loss: 0.0083\n",
      "Epoch 16/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0033 - val_loss: 0.0082\n",
      "Epoch 17/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0039 - val_loss: 0.0081\n",
      "Epoch 18/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0037 - val_loss: 0.0081\n",
      "Epoch 19/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0039 - val_loss: 0.0081\n",
      "Epoch 20/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0040 - val_loss: 0.0081\n",
      "Epoch 21/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0034 - val_loss: 0.0083\n",
      "Epoch 22/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0037 - val_loss: 0.0085\n",
      "Epoch 23/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0033 - val_loss: 0.0084\n",
      "Epoch 24/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0032 - val_loss: 0.0085\n",
      "Epoch 25/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0031 - val_loss: 0.0083\n",
      "Epoch 26/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0037 - val_loss: 0.0084\n",
      "Epoch 27/100\n",
      "587/587 [==============================] - 2s 3ms/step - loss: 0.0037 - val_loss: 0.0080\n",
      "Epoch 28/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0036 - val_loss: 0.0084\n",
      "Epoch 29/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0037 - val_loss: 0.0081\n",
      "Epoch 30/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0033 - val_loss: 0.0081\n",
      "Epoch 31/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0037 - val_loss: 0.0081\n",
      "Epoch 32/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0036 - val_loss: 0.0080\n",
      "Epoch 33/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0035 - val_loss: 0.0083\n",
      "Epoch 34/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0038 - val_loss: 0.0083\n",
      "Epoch 35/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0038 - val_loss: 0.0081\n",
      "Epoch 36/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0034 - val_loss: 0.0081\n",
      "Epoch 37/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0040 - val_loss: 0.0080\n",
      "Epoch 38/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0037 - val_loss: 0.0080\n",
      "Epoch 39/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0035 - val_loss: 0.0082\n",
      "Epoch 40/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0033 - val_loss: 0.0079\n",
      "Epoch 41/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0033 - val_loss: 0.0080\n",
      "Epoch 42/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0035 - val_loss: 0.0082\n",
      "Epoch 43/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0040 - val_loss: 0.0081\n",
      "Epoch 44/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0036 - val_loss: 0.0081\n",
      "Epoch 45/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0040 - val_loss: 0.0080\n",
      "Epoch 46/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0038 - val_loss: 0.0079\n",
      "Epoch 47/100\n",
      "587/587 [==============================] - 2s 3ms/step - loss: 0.0036 - val_loss: 0.0078\n",
      "Epoch 48/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0034 - val_loss: 0.0079\n",
      "Epoch 49/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0038 - val_loss: 0.0080\n",
      "Epoch 50/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0040 - val_loss: 0.0080\n",
      "Epoch 51/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0036 - val_loss: 0.0081\n",
      "Epoch 52/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0035 - val_loss: 0.0082\n",
      "Epoch 53/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0035 - val_loss: 0.0078\n",
      "Epoch 54/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0029 - val_loss: 0.0078\n",
      "Epoch 55/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0038 - val_loss: 0.0080\n",
      "Epoch 56/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0033 - val_loss: 0.0081\n",
      "Epoch 57/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0034 - val_loss: 0.0078\n",
      "Epoch 58/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0037 - val_loss: 0.0084\n",
      "Epoch 59/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0038 - val_loss: 0.0078\n",
      "Epoch 60/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0038 - val_loss: 0.0077\n",
      "Epoch 61/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0034 - val_loss: 0.0078\n",
      "Epoch 62/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0035 - val_loss: 0.0077\n",
      "Epoch 63/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0035 - val_loss: 0.0078\n",
      "Epoch 64/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0031 - val_loss: 0.0077\n",
      "Epoch 65/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0038 - val_loss: 0.0078\n",
      "Epoch 66/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0032 - val_loss: 0.0081\n",
      "Epoch 67/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0032 - val_loss: 0.0077\n",
      "Epoch 68/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0032 - val_loss: 0.0077\n",
      "Epoch 69/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0033 - val_loss: 0.0079\n",
      "Epoch 70/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0034 - val_loss: 0.0077\n",
      "Epoch 71/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0036 - val_loss: 0.0076\n",
      "Epoch 72/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0038 - val_loss: 0.0076\n",
      "Epoch 73/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0036 - val_loss: 0.0078\n",
      "Epoch 74/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0032 - val_loss: 0.0077\n",
      "Epoch 75/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0036 - val_loss: 0.0077\n",
      "Epoch 76/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0036 - val_loss: 0.0079\n",
      "Epoch 77/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0033 - val_loss: 0.0077\n",
      "Epoch 78/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0030 - val_loss: 0.0076\n",
      "Epoch 79/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0033 - val_loss: 0.0076\n",
      "Epoch 80/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0034 - val_loss: 0.0077\n",
      "Epoch 81/100\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0036 - val_loss: 0.0076\n",
      "Epoch 82/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0034 - val_loss: 0.0076\n",
      "Epoch 83/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0034 - val_loss: 0.0077\n",
      "Epoch 84/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0034 - val_loss: 0.0076\n",
      "Epoch 85/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0032 - val_loss: 0.0076\n",
      "Epoch 86/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0034 - val_loss: 0.0076\n",
      "Epoch 87/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0037 - val_loss: 0.0076\n",
      "Epoch 88/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0031 - val_loss: 0.0075\n",
      "Epoch 89/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0035 - val_loss: 0.0074\n",
      "Epoch 90/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0033 - val_loss: 0.0077\n",
      "Epoch 91/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0036 - val_loss: 0.0075\n",
      "Epoch 92/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0035 - val_loss: 0.0074\n",
      "Epoch 93/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0032 - val_loss: 0.0077\n",
      "Epoch 94/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0031 - val_loss: 0.0076\n",
      "Epoch 95/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0033 - val_loss: 0.0074\n",
      "Epoch 96/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0036 - val_loss: 0.0077\n",
      "Epoch 97/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0034 - val_loss: 0.0076\n",
      "Epoch 98/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0035 - val_loss: 0.0076\n",
      "Epoch 99/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0031 - val_loss: 0.0074\n",
      "Epoch 100/100\n",
      "587/587 [==============================] - 1s 2ms/step - loss: 0.0034 - val_loss: 0.0076\n"
     ]
    }
   ],
   "source": [
    "history = model.fit(trainX, trainY, epochs=100, batch_size=20, validation_data=(testX, testY), verbose=1, shuffle = False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 262,
   "metadata": {},
   "outputs": [],
   "source": [
    "# save model architecture\n",
    "model_json = model.to_json()\n",
    "open('50%/model/B48_model.json', 'w').write(model_json)\n",
    "\n",
    "# save model's learned weights\n",
    "model.save_weights('50%/model/B48_weights.h5', overwrite=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 263,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loaded model from disk\n"
     ]
    }
   ],
   "source": [
    "# Load trained model\n",
    "from keras.models import model_from_json \n",
    "\n",
    "json_file = open(\"50%/model/B48_model.json\", \"r\")\n",
    "loaded_model_json = json_file.read() \n",
    "json_file.close()\n",
    "loaded_model = model_from_json(loaded_model_json)\n",
    " \n",
    "# model weight load \n",
    "loaded_model.load_weights(\"50%/model/B48_weights.h5\")\n",
    "print(\"Loaded model from disk\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 264,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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CtasWcPatWtZt24dnZ2dp32OEEKI80PW66y2bdvGnDlzAJg5cyZNTU2ZtubmZioqKvD701/YXFtbS0NDA42Njad8jhBCiPND1gAIhUJ4vcdv4zcMg2QyiWmahEIhfL7jNyF4PB5CodBpn3MqDocxqhsaYHQ3RNhBPtefz7WD1J/v9Z+prFNAXq+XcPj4gl+WZWV25B9sC4fD+Hy+0z5HCCHE+SFrAMyePZstW7YA0NjYSE1NTaaturqalpYWgsEg8XichoYGZs2addrnCCGEOD9kXQvIsiyWLl3Knj17UEqxfPlyduzYQSQSob6+ns2bN7Nq1SqUUtTV1fGZz3zmpM+prq7+sGoSQgiRg/NmMTghhBAfLrkRTAgh8pQEgBBC5KkL+tKcY+cadu/ejdPpZNmyZVRWVp7rbo2pRCLBE088wZEjR4jH4zz00ENcdNFFLFmyBE3TuPjii/nWt76Frts727u7u/mLv/gL1qxZg2maeVX/M888w+bNm0kkEixcuJBrr702b+pPJBIsWbKEI0eOoOs6//AP/5AX//7vvPMO//iP/8jatWtpaWk5ab3r16/nl7/8JaZp8tBDD3Hrrbdmf2F1Afvd736nHn/8caWUUm+//bb64he/eI57NPY2bNigli1bppRSqqenR918883qwQcfVG+88YZSSqknn3xSvfjii+eyi2MuHo+rv/mbv1G333672rt3b17V/8Ybb6gHH3xQpVIpFQqF1Pe///28qv+ll15SjzzyiFJKqVdffVV96Utfsn39P/7xj9U999yj7r//fqWUOmm9HR0d6p577lGxWEz19/dn/j+bCzomT3eXsl3dcccdfPnLX848NgyDd999l2uvvRaAm266iddee+1cde9D8fTTT7NgwQImTJgAkFf1v/rqq9TU1PDwww/zxS9+kVtuuSWv6p8+fTqpVArLsgiFQpimafv6Kyoq+MEPfpB5fLJ6t2/fzqxZs3A6nfh8PioqKti1a1fW176gA+BUdxzbmcfjwev1EgqFeOSRR3j00UdRSmW+I9Tj8TAwMHCOezl2nn32WUpKSjLBD+RV/b29vTQ1NfEv//IvfPvb3+arX/1qXtXvdrs5cuQId955J08++SSLFi2yff3z5s0bdiPtyeo91aoM2VzQ5wDy9Y7j1tZWHn74YT796U/ziU98gu9973uZtnA4TFFR0Tns3dj61a9+haZpvP766+zcuZPHH3+cnp6eTLvd6w8EAlRVVeF0OqmqqsLlctHW1pZpt3v9P/3pT/nYxz7GY489RmtrK5/73OdIJBKZdrvXDww7v3Gs3lOtypD1tcakhx+SfLzjuKuriwceeICvfe1r3HfffQBcdtllvPnmmwBs2bKFq6+++lx2cUz9/Oc/52c/+xlr165lxowZPP3009x00015U39tbS2vvPIKSina29sZHBzk+uuvz5v6i4qKMjs2v99PMpnMq88/nPzv/aqrrmLbtm3EYjEGBgZobm7OaX94Qd8Ilo93HC9btozf/va3VFVVZX72d3/3dyxbtoxEIkFVVRXLli3DMIxz2MsPx6JFi1i6dCm6rvPkk0/mTf3f/e53efPNN1FK8ZWvfIUpU6bkTf3hcJgnnniCzs5OEokEn/3sZ7niiitsX//hw4f527/9W9avX8/+/ftPWu/69etZt24dSikefPBB5s2bl/V1L+gAEEIIceYu6CkgIYQQZ04CQAgh8pQEgBBC5CkJACGEyFMSAEIIkackAIQQIk9JAAghRJ6SABBCiDz1/wBI6PqcriOvjwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(history.history['loss'], label='train')\n",
    "plt.plot(history.history['val_loss'], label='test')\n",
    "plt.axis([-5, 100, 0, 0.07])\n",
    "plt.legend() \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 265,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "yhat = model.predict(testX)\n",
    "tyhat = model.predict(trainX)\n",
    "plt.plot(yhat, label='Prediction')\n",
    "plt.plot(testY, label='Real data')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 266,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of train data : (11738, 1, 1)\n",
      "Shape of prediction : (11738, 1)\n",
      "Shape of real data : (11738,)\n"
     ]
    }
   ],
   "source": [
    "print(\"Shape of train data :\", trainX.shape)\n",
    "print(\"Shape of prediction :\", yhat.shape)\n",
    "print(\"Shape of real data :\", testY.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 267,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test RMSE: 0.009\n",
      "Test MAE: 0.008\n"
     ]
    }
   ],
   "source": [
    "rmse = math.sqrt(mean_squared_error(testY, yhat))\n",
    "mae = mean_absolute_error(testY, yhat)\n",
    "print('Test RMSE: %.3f' % rmse)\n",
    "print('Test MAE: %.3f' % mae)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. Visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 268,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of cycle : (23478,)\n",
      "(11738,) (11738,)\n"
     ]
    }
   ],
   "source": [
    "print(\"Shape of cycle :\", np.shape(cycle))\n",
    "\n",
    "cycle1 = cycle[0:train_size-1]\n",
    "cycle2 = cycle[train_size+1:len(dataset)]\n",
    "\n",
    "# cycle1 = cycle[0:train_size]\n",
    "# cycle2 = cycle[train_size:len(dataset)]\n",
    "\n",
    "print(np.shape(cycle1), np.shape(cycle2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 269,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAt4AAAH0CAYAAAAKSyqSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeZxO5f/H8dd937MvZmyhZF/Hmux7JC2UyhpStrImO8keylb2JVFkS/Gl4idLtkRIQpYWQsg2+3ovvz+mDtMMZph7Gd7Px2Me3/s651zn+syn6dtnrrnOdUwOh8OBiIiIiIg4ldndAYiIiIiI3A9UeIuIiIiIuIAKbxERERERF1DhLSIiIiLiAiq8RURERERcQIW3iIiIiIgLqPAWEfmPBg0aULJkSeOrXLlyNGnShFWrVt20z8GDBwkLC2PPnj0pjq9fv56mTZtSsWJFnn76aT7//PNbjm2321m0aBFNmzalXLlyVK5cmVdeeYXvvvsu1bXR0dF88MEHPPnkk5QrV45atWrRs2dPfvzxxxTX7dmzh5IlS3LhwoVU99i3bx8lS5bk7NmzacbzxRdfpMhFyZIlKVu2LE888QSzZs3Cbrff8vvJqP/G0759e95666109T1//jxfffWV0c5IXxERV/BydwAiIp6oS5cudOjQAYC4uDh27tzJ8OHDyZUrF/Xr109xbWxsLAMHDsRms6U4vm/fPgYMGMCwYcOoVasWu3bt4u233yZnzpyp7vGv999/n9WrVzNs2DDCwsKIiYlh1apVdO7cmQULFlCjRg0AwsPDadeuHUlJSbzxxhuUL1+eq1evsnLlStq1a8fo0aN58cUXMyUXFouFbdu2Ge3ExES2b9/O6NGj8fLyomvXrpkyTlqmT5+Ol1f6/lM1dOhQ8uTJwzPPPJPhviIirqD/RxIRSUNAQAC5c+c22i+99BKbN29mzZo1qYrmCRMmkCdPHk6fPp3i+ObNmylRogStW7cGoHXr1qxatYqdO3fetPBesWIFPXv2pHHjxsaxYcOGcezYMT799FOj8B4zZgwxMTGsXr2a0NBQAPLnz0/58uXJlSsXo0aN4tFHH6VQoUJ3mYlkN+YCoE2bNmzatImvv/7aqYX3v99bevz3fXAZ6Ssi4gpaaiIikk7+/v6YTKYUx7Zt28a3337LsGHDUl2fPXt2Tp48yffff4/D4eCHH37g5MmTlC1b9qZjmM1mvv/+exISElIcnzx5Mm+//TYAV69eZf369XTo0CHN4rJ79+54e3uzcuXKO/k2081iseDj4wMkzy63b9+e3r17U6lSJaZOnQrApk2bePbZZylXrhxPPvkkCxYsSLE85dixY7Rr144KFSrQpEkTjhw5kmKM/y4XOXToEO3bt6dixYrUrl2b9957D6vVyuDBg9m9ezerV6+mZMmSafbdt28f7dq145FHHqFmzZqMHTuWuLg4AM6ePUvJkiX5v//7P55//nkqVKjAc889x6ZNm5yTPBG5L2nGW0TkNhwOB7t372bXrl3MmDHDOH716lXeeustxo0bR0hISKp+bdu25cCBA3To0AGLxYLNZqNjx440a9bspmN16dKFd999l9q1a1OzZk2qVKlCzZo1KVKkiHHNzz//jM1mo1KlSmnew8fHh4oVK6Za651ZEhIS2LBhAzt37qRfv37G8b1799K5c2dWr16N2Wxm27Zt9O/fn2HDhlG1alVOnjzJ6NGjiYuLo2fPnkRERPDKK69QvXp1Pv/8c06dOmX8cpGWM2fO8PLLL9OkSRNGjBjBpUuXGDBgAN7e3rz11lucOXOG3Llzp7mu+6effuKVV16hffv2jBo1irNnzzJy5EjOnj3LnDlzjOvee+89RowYQd68eZkyZQqDBg1ix44dBAQEZG4SReS+pMJbRCQNs2bNYv78+UDymmar1UqjRo2oUqWKcc2IESNo0KABdevWTfPBxatXr3LlyhUGDBhArVq12LdvH5MmTaJo0aI0b948zXE7duxI0aJFWbp0Kdu2bWPDhg0AVK9enXfffZe8efMSGRkJ3HopRWhoaKoHJp988slUM/bpeTjSZrPxyCOPGO3Y2FiCgoJo164dr7zyinHcZDLRq1cv/Pz8ABg4cCBt2rQxvtcCBQoQExPD22+/Tffu3fnqq69ISkrinXfeITAwkGLFinHx4kVGjx6dZhwrV640ltFYLBaKFSvGmDFj+OuvvwgODsbb2xs/P79Uy2IAPvroI8qWLcugQYMAKFq0KCNHjqRr166cPHkSf39/ADp16kTdunUBeOONN2jWrBm//vor5cuXv22eRERuR4W3iEga2rZty0svvQQkF94nT55k4sSJ9OjRg/nz57N69WqOHj3K2rVrb3qPYcOGUbp0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7doVgISEBL755huef/55Ro8eTWJiontOQkRERETkFrkteCcmJuLr6+t4bLFYyMjIWnroqaeeYty4cSxZsoQdO3awadMmx74FCxYwYMAAx+O6desyYsQIli1bRsWKFZkzZ457TkJERERE5Ba5rdXE19eXpKQkx2ObzYbVan97wzDo2bMnpUqVAqBly5bs27ePRx99lMuXL3PkyBGaNGniOLZ169b4+fk5vo6MjMz1vS0WE/7+Pvkar8VizvcxkjeqbcFRbQuOaltwVNuCo9oWHNW24BTn2roteDds2JBNmzbRrl074uPjqVGjhmNfYmIi7du354svvsDHx4e4uDieeeYZALZv306zZs2cXqtPnz5ERERQt25dvv/+e2rXrp3re2dmGvzxR3K+xuvv75PvYyRvVNuCo9oWHNW24Ki2BUe1LTiqbcEp6rUtU6bUDfe5LXi3bt2abdu20a1bNwzDYNKkSXz22WckJyfTtWtXBg8eTHh4OJ6enjRt2pSWLVsCcPToUSpUqOD0WuPGjSMyMhIPDw9Kly590xlvEREREZHCZjIMwyjsQRS09PRMzXjfQVTbgqPaFhzVtuCotgVHtS04qm3BKeq1zW3GWzfQERERERFxAwVvERERERE3UPAWEREREXEDBW8RERERETdQ8BYRERERcQMFbxERERERN1DwFhERERFxg7tiHW8RERERkcKmGW8RERERETdQ8BYRERERcQMFbxERERERN1DwFhERERFxAwVvERERERE3UPAWEREREXEDa2EP4E5js9kYN24cP//8M56enkycOJHAwMDCHlaRt3v3bqZNm0ZMTAzHjx/njTfewGQyUb16dd58803MZv0OmF/p6emMHj2a06dPk5aWRv/+/alWrZpq6wKZmZmMGTOGo0ePYrFYmDx5MoZhqLYudPHiRUJDQ/nXv/6F1WpVbV2kU6dOlCpVCoAKFSrQr18/1dZFFixYwNdff016ejphYWEEBwerti6wevVq1qxZA0Bqair79+9n+fLlTJo0qVjWtnichQvFxsaSlpbGypUrGTp0KFOmTCnsIRV5ixYtYsyYMaSmpgIwefJkXn/9dZYvX45hGGzcuLGQR1g0rV27Fn9/f5YvX86iRYuIjIxUbV1k06ZNAKxYsYJBgwYxefJk1daF0tPTGTt2LF5eXoC+J7jKte+xMTExxMTE6HPrQnFxcezatYsPPviAmJgYfv31V9XWRUJDQx2f2dq1azNmzBjmzJlTbGur4P0nO3bsICQkBID69euTkJBQyCMq+ipVqsTs2bMdj/fu3UtwcDAALVq04LvvviusoRVpbdu25bXXXnM8tlgsqq2LPP7440RGRgJw5swZSpcurdq6UFRUFN26daNs2bKAvie4yoEDB0hJSaF3796Eh4cTHx+v2rrI1q1bqVGjBgMGDKBfv360atVKtXWxPXv2cOjQIbp27Vqsa6vg/SeJiYn4+vo6HlssFjIyMgpxREVfmzZtsFqzupoMw8BkMgFQsmRJrly5UlhDK9JKliyJr68viYmJDBo0iNdff121dSGr1crIkSOJjIykTZs2qq2LrF69moCAAMcEB+h7gqt4eXnRp08f3nvvPcaPH8+wYcNUWxf5/fffSUhI4J133lFtC8iCBQsYMGAAULy/Jyh4/4mvry9JSUmOxzabzSk0yu27vk8rKSkJPz+/QhxN0Xb27FnCw8N5+umn6dChg2rrYlFRUWzYsIGIiAjHn/FBtb0dq1at4rvvvqNHjx7s37+fkSNHcunSJcd+1fbWValShY4dO2IymahSpQr+/v5cvHjRsV+1vXX+/v40b94cT09PgoKCKFGihFMYVG1vz+XLlzly5AhNmjQBindOUPD+k4YNG7JlyxYA4uPjqVGjRiGPqPipVasWcXFxAGzZsoWHHnqokEdUNF24cIHevXszfPhwunTpAqi2rvLJJ5+wYMECALy9vTGZTNSpU0e1dYFly5axdOlSYmJieOCBB4iKiqJFixaqrQt8/PHHjuuSzp07R2JiIo888ohq6wKNGjXi22+/xTAMzp07R0pKCk2bNlVtXWT7xya6AAAACQ1JREFU9u00a9bM8bg4/ywzGYZhFPYg7iTXVjU5ePAghmEwadIkqlatWtjDKvJOnTrFkCFD+PDDDzl69CgRERGkp6cTFBTExIkTsVgshT3EImfixImsX7+eoKAgx7a///3vTJw4UbW9TcnJyYwaNYoLFy6QkZHBiy++SNWqVfW5dbEePXowbtw4zGazausCaWlpjBo1ijNnzmAymRg2bBj33nuvausib731FnFxcRiGweDBg6lQoYJq6yLvvvsuVquVXr16ARTrnKDgLSIiIiLiBmo1ERERERFxAwVvERERERE3UPAWEREREXEDBW8R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\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set_style(\"darkgrid\")\n",
    "plt.figure(figsize=(12, 8))\n",
    "\n",
    "plt.plot(cycle1, trainX[:,0],label='Used real data', linewidth = 3, color='r')\n",
    "plt.plot(cycle2, testY,label='Real data', linewidth = 3, color='b')\n",
    "# plt.plot(cycle2, yhat[:,0],label='LSTM Prediction', linewidth = 3, color='g')\n",
    "plt.plot(cycle2, yhat[:,0],label='LSTM Prediction', linewidth = 3, color='g')\n",
    "plt.legend(prop={'size': 16})\n",
    "\n",
    "plt.ylabel('SoH', fontsize = 15)\n",
    "plt.xlabel('Discharge cycle', fontsize = 15)\n",
    "plt.title(str(num[7]) + \" SOH Prediction\", fontsize = 15)\n",
    "plt.savefig('50%/fig/' + str(num[7]) + '_LSTM.jpg')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
